import sqlite3 as dbapi
import re


class llenarDB:
    def __init__(self, cvs,database):
        self.database = str(database)
        self.nameTable = cvs.split("/")
        self.nameTable = self.nameTable[len(self.nameTable)-1]
        self.nameTable = self.nameTable.split(".")[0]
        self.car = dbapi.connect(self.database)
        self.cursor = self.car.cursor()
        cadenasql = "create table %s (estacion text,year float, enero float, febrero float, marzo float, abril float, mayo float,junio float,julio float,agosto float, septiembre float,octubre float, noviembre float, diciembre float)"%self.nameTable        
        self.cursor.execute(cadenasql)
        self.micvs = open(cvs,"r")
        self.cvs = self.micvs.readlines()
        self.m = len(self.cvs)
        self.cuantos = 0
        self.estacion = [0]
        self.estacion.remove(0)
        self.num_linea = [0]
        self.num_linea.remove(0)
    
        for i in range(self.m):
            if re.search("Sheet",self.cvs[i][:]):
                linea=self.cvs[i][:].split(" ")
                self.estacion.insert(self.cuantos,linea[2])
                self.num_linea.insert(self.cuantos,i)
                self.cuantos=self.cuantos+1
        
        for l in range(self.cuantos-1):
            indice = self.num_linea[l]+14
            #print indice
            while indice < self.num_linea[l+1]:
                contador = 0
                if re.search('19\d\d+\.\d*',self.cvs[indice + contador]) or re.search('20\d\d+\.\d*',self.cvs[indice + contador]):
                    self.fila = self.cvs[indice + contador][:].split(", ,")
                    self.Funcommit(self.fila,l,self.nameTable)
                contador = contador+1
                indice = indice + 1
                
        indice = self.num_linea[self.cuantos-1]+14
        while indice < len(self.cvs):
            contador = 0
            if re.search('19\d\d+\.\d*',self.cvs[indice + contador]) or re.search('20\d\d+\.\d*',self.cvs[indice + contador]):
                self.fila = self.cvs[indice + contador].split(", ,")
                self.Funcommit(self.fila,self.cuantos-1,self.nameTable)
            contador = contador+1
            indice = indice + 1
        
        self.car.commit()
        self.car.close()
    
    def Funcommit(self,fila,l,nameTabla):
        fila.insert(0,self.estacion[l].split("\n")[0])
        lenght = len(fila)
        if lenght<14:
            for i in range(lenght,14):
                fila.insert(i," ")
        query = 'INSERT INTO %s VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)'%nameTabla
        self.cursor.execute(query, fila)